import {
  initState
} from './state'
import {
  initRender
} from './render'

let uid = 0

export function initMixin(Vue) {
  // 挂载_init方法
  Vue.prototype._init = function (options) {
    // 缓存当前实例
    const vm = this
    // 初始化_isVue属性
    vm._isVue = true
    // 初始化_uid属性
    vm._uid = uid++
    if (options && options._isComponent) {
      initInternalComponent(vm, options)
    } else {
      // 挂载$options属性
      vm.$options = options
    }
    // 将当前实例挂载到_renderProxy属性
    vm._renderProxy = vm
    // 初始化render函数
    initRender(vm)
    // callHook(vm,'beforeCreate')
    // 初始化状态
    initState(vm)
    if (vm.$options.el) {
      // 如果有el属性，挂载vnode
      vm.$mount(vm.$options.el)
    }
  }
}

export function initInternalComponent(vm, options) {

}